home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / answers / comp / python-faq < prev    next >
Text File  |  1994-04-11  |  29KB  |  701 lines

  1. Newsgroups: comp.lang.python,comp.answers,news.answers
  2. Path: bloom-beacon.mit.edu!hookup!news.moneng.mei.com!howland.reston.ans.net!EU.net!sun4nl!cwi.nl!guido
  3. From: guido@cwi.nl (Guido van Rossum)
  4. Subject: FAQ: Python -- an object-oriented language
  5. Message-ID: <Co3DHp.F4z@cwi.nl>
  6. Followup-To: comp.lang.python
  7. Originator: guido@voorn.cwi.nl
  8. Sender: news@cwi.nl (The Daily Dross)
  9. Nntp-Posting-Host: voorn.cwi.nl
  10. Reply-To: guido@cwi.nl (Guido van Rossum)
  11. Organization: CWI, Amsterdam
  12. Date: Mon, 11 Apr 1994 11:05:49 GMT
  13. Approved: news-answers-request@MIT.Edu
  14. Lines: 684
  15. Xref: bloom-beacon.mit.edu comp.lang.python:168 comp.answers:4852 news.answers:17899
  16.  
  17. Archive-name: python-faq/part1
  18. Version: 1.6
  19. Last-modified: 11 April 1994
  20.  
  21. This article contains answers to Frequently Asked Questions about
  22. Python (an object-oriented interpreted programming language -- see
  23. the answer to question 1.1 for a short overview).
  24.  
  25. Copyright 1993, 1994 Guido van Rossum.  Unchanged electronic
  26. redistribution of this FAQ is allowed.  Printed redistribution only
  27. with permission of the author.  No warranties.
  28.  
  29. Author's address:
  30.     Guido van Rossum
  31.     CWI, dept. CST
  32.     Kruislaan 413
  33.     P.O. Box 94079
  34.     1090 GB  Amsterdam
  35.     The Netherlands
  36. Email:    guido@cwi.nl
  37.  
  38. The latest version of this FAQ is available by anonymous ftp from
  39. ftp.cwi.nl [192.16.184.180] in the directory /pub/python, with
  40. filename python-FAQ.  It will also be posted regularly to the
  41. newsgroups comp.answers and comp.lang.python.
  42.  
  43. Many FAQs, including this one, are available by anonymous ftp from
  44. rtfm.mit.edu [18.70.0.209] in the directory pub/usenet/news.answers.  
  45. The name under which a FAQ is archived appears in the Archive-name line 
  46. at the top of the article.  This FAQ is archived as python-faq/part1.
  47.  
  48. There's a mail server on that machine which will send you files from
  49. the archive by e-mail if you have no ftp access.  You send a e-mail
  50. message to mail-server@rtfm.mit.edu containing the single word help in
  51. the message body to receive instructions.
  52.  
  53. This FAQ is divided in the following chapters:
  54.  
  55.  1. General information and availability
  56.  2. Python in the real world
  57.  3. Building Python
  58.  4. Programming in Python
  59.  5. Extending Python
  60.  6. Python's design
  61.  7. Using Python on non-UNIX platforms
  62.  
  63. To find the start of a particular chapter, search for the chapter number
  64. followed by a dot and a space at the beginning of a line (e.g. to
  65. find chapter 4 in vi, type /^4\. /).
  66.  
  67. Here's an overview of the questions per chapter:
  68.  
  69.  1. General information and availability
  70.   1.1. Q. What is Python?
  71.   1.2. Q. Why is it called Python?
  72.   1.3. Q. How do I obtain a copy of the Python source?
  73.   1.4. Q. How do I get documentation on Python?
  74.   1.5. Q. Is there a newsgroup or mailing list devoted to Python?
  75.   1.6. Q. Is there a book on Python, or will there be one out soon?
  76.   1.7. Q. Are there any published articles about Python that I can quote?
  77.   1.8. Q. How does the Python version numbering scheme work?
  78.   1.9. Q. Are there other ftp sites that carry Python related material?
  79.  
  80.  2. Python in the real world
  81.   2.1. Q. How many people are using Python?
  82.   2.2. Q. Have any significant projects been done in Python?
  83.   2.3. Q. Are there any commercial projects going on using Python?
  84.   2.4. Q. How stable is Python?
  85.   2.5. Q. What new developments are expected for Python in the future?
  86.  
  87.  3. Building Python
  88.   3.1. Q. Is there a test set?
  89.   3.2. Q. When running the test set, I get complaints about floating point
  90.        operations, but when playing with floating point operations I cannot
  91.        find anything wrong with them.
  92.   3.3. Q. Link errors building Python with STDWIN on SGI IRIX.
  93.   3.4. Q. Link errors after rerunning the configure script.
  94.   3.5. Q. The python interpreter complains about options passed to a
  95.        script (after the script name).
  96.   3.6. Q. When building on the SGI, make tries to run python to create
  97.        glmodule.c, but python hasn't been built or installed yet.
  98.   3.7. Q. Other trouble building Python 1.0.1 on platform X.
  99.  
  100.  4. Programming in Python
  101.   4.1. Q. Is there a source code level debugger with breakpoints, step,
  102.        etc.?
  103.   4.2. Q. Can I create an object class with some methods implemented in
  104.        C and others in Python (e.g. through inheritance)?  (Also phrased as:
  105.        Can I use a built-in type as base class?)
  106.   4.3. Q. Is there a curses/termcap package for Python?
  107.   4.4. Q. Is there an equivalent to C's onexit() in Python?
  108.   4.5. Q. When I define a function nested inside another function, the
  109.        nested function seemingly can't access the local variables of the
  110.        outer function.  What is going on?  How do I pass local data to a
  111.        nested function?
  112.   4.6. Q. How do I iterate over a sequence in reverse order?
  113.   4.7. Q. My program is too slow.  How do I speed it up?
  114.   4.8. Q. When I have imported a module, then edit it, and import it
  115.        again (into the same Python process), the changes don't seem to take
  116.        place.  What is going on?
  117.   4.9. Q. I have a module in which I want to execute some extra code when it
  118.        is run as a script.  How do I find out whether I am running as a
  119.        script?
  120.  
  121.  5. Extending Python
  122.   5.1. Q. Can I create my own functions in C?
  123.   5.2. Q. Can I create my own functions in C++?
  124.  
  125.  6. Python's design
  126.   6.1. Q. Why isn't there a generic copying operation for objects in
  127.        Python?
  128.   6.2. Q. Why isn't there a generic way to implement persistent objects
  129.        in Python?  (Persistent == automatically saved to and restored from
  130.        disk.)
  131.   6.3. Q. Why isn't there a switch or case statement in Python?
  132.  
  133.  7. Using Python on non-UNIX platforms
  134.   7.1. Q. Is there a Mac version of Python?
  135.   7.2. Q. Is there a DOS version of Python?
  136.   7.3. Q. Is there a Windows version of Python?
  137.   7.4. Q. Is there a Windows NT version of Python?
  138.   7.5. Q. I have the DOS or Windows version but it appears to be only a
  139.        binary.  Where's the library?
  140.   7.6. Q. Where's the documentation for the Mac or PC version?
  141.   7.7. Q. The Mac (PC) version doesn't seem to have any facilities for
  142.        creating or editing programs apart from entering it interactively, and
  143.        there seems to be no way to save code that was entered interactively.
  144.        How do I create a Python program on the Mac (PC)?
  145.  
  146. To find a particular question, search for the question number followed
  147. by a dot, a space, and a Q at the beginning of a line (e.g. to find
  148. question 4.2 in vi, type /^4\.2\. Q/).
  149.  
  150.  
  151. 1. General information and availability
  152. =======================================
  153.  
  154. 1.1. Q. What is Python?
  155.  
  156. A. Python is an interpreted, interactive, object-oriented programming
  157. language.  It incorporates modules, exceptions, dynamic typing, very
  158. high level dynamic data types, and classes.  Python combines
  159. remarkable power with very clear syntax.  It has interfaces to many
  160. system calls and libraries, as well as to various window systems, and
  161. is extensible in C or C++.  It is also usable as an extension language
  162. for applications that need a programmable interface.  Finally, Python
  163. is portable: it runs on many brands of UNIX, on the Mac, and on
  164. MS-DOS.
  165.  
  166. To find out more, the best thing to do is to start reading the
  167. tutorial from the documentation set (see a few questions further
  168. down).
  169.  
  170. 1.2. Q. Why is it called Python?
  171.  
  172. A. Apart from being a computer wizard, I'm also a fan of "Monty
  173. Python's Flying Circus" (a BBC comedy series from the seventies, in
  174. the -- unlikely -- case you didn't know).  It occurred to me one day
  175. that I needed a name that was short, unique, and slightly mysterious.
  176. And I happened to be reading some scripts from the series at the
  177. time...  So then I decided to call my language Python.  But Python is
  178. not a joke.  And don't you associate it with dangerous reptiles
  179. either!
  180.  
  181. 1.3. Q. How do I obtain a copy of the Python source?
  182.  
  183. A. The latest Python source distribution is always available by
  184. anonymous ftp from ftp.cwi.nl [192.16.184.180] in the directory
  185. /pub/python, with filename python<version>.tar.Z.  (In the future and
  186. on some archive sites the extension will be .gz, indicating use of
  187. gzip compression.)  It is a compressed (gzip'ed if the extension is
  188. .gz) tar file containing the complete C source, LaTeX documentation,
  189. Python library modules, example programs, and several useful pieces of
  190. freely distributable software.  This will compile and run out of the
  191. box on most UNIX platforms.  At the time of writing, <version> is
  192. 1.0.1.  (See section 7 for non-UNIX information.)
  193.  
  194. 1.4. Q. How do I get documentation on Python?
  195.  
  196. A. The latest Python documentation set is always available by
  197. anonymous ftp from ftp.cwi.nl [192.16.184.180] in the directory
  198. /pub/python, with filename pythondoc-ps<version>.tar.Z.  (Or .gz --
  199. see the previous question.)  It is a compressed (or gzip'ed) tar file
  200. containing PostScript files of the reference manual, the library
  201. manual, and the tutorial.  At the time of writing <version> is 1.0.1.
  202. Note that the library manual is the most important one of the set, as
  203. much of Python's power stems from the standard or built-in types,
  204. functions and modules, all of which are described here.  PostScript
  205. for a high-level description of Python is in the file nluug-paper.ps.
  206.  
  207. The following sites keep mirrors of the Python distribution:
  208.  
  209. Site            IP address     Directory
  210.  
  211. gatekeeper.dec.com    16.1.0.2    /pub/plan/python/cwi
  212. ftp.uu.net        192.48.96.9    /languages/python
  213. ftp.wustl.edu        128.252.135.4    /graphics/graphics/sgi-stuff/python
  214. ftp.funet.fi        128.214.6.100    /pub/languages/python (old?)
  215. ftp.fu-berlin.de    130.133.4.50    /pub/unix/languages/python (*python* only)
  216.  
  217. Or try archie on e.g. python1.0 to locate the nearest copy of that
  218. version...
  219.  
  220. 1.5. Q. Is there a newsgroup or mailing list devoted to Python?
  221.  
  222. A. There is a newsgroup, comp.lang.python, and a mailing list.  The
  223. newsgroup and mailing list are gatewayed into each other -- if you can
  224. read news it is not necessary to subscribe to the mailing list.  Send
  225. e-mail to python-list-request@cwi.nl to (un)subscribe to the mailing
  226. list.
  227.  
  228. 1.6. Q. Is there a book on Python, or will there be one out soon?
  229.  
  230. A. Unfortunately, not yet.  I would like to write one but my
  231. obligations at CWI include too much other work to make much progress
  232. on it.  Several parties have expressed interest in sponsoring or
  233. helping the production of a book or reference manual, but so far there
  234. are no firm plans.  If you volunteer help, by all means drop me a
  235. note!
  236.  
  237. 1.7. Q. Are there any published articles about Python that I can quote?
  238.  
  239. A. So far the only refereed and published article that describes
  240. Python in some detail is:
  241.  
  242.     Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
  243.     Servers Using the Python Programming Language", CWI Quarterly, Volume
  244.     4, Issue 4 (December 1991), Amsterdam, pp 283-303.
  245.  
  246. LaTeX source for this paper is available as part of the Python source
  247. distribution.
  248.  
  249. A more recent high-level description of Python is:
  250.  
  251.     Guido van Rossum, "An Introduction to Python for UNIX/C
  252.     Programmers", in the proceedings of the NLUUG najaarsconferentie
  253.     1993 (dutch UNIX users group meeting november 1993).
  254.     
  255. PostScript for this paper and for the slides used for the accompanying
  256. presentation can be found in the ftp directory mentioned a few
  257. questions earlier, with filenames nluug-paper.ps and nluug-slides.ps,
  258. respectively.
  259.  
  260. 1.8. Q. How does the Python version numbering scheme work?
  261.  
  262. A. Python versions are numbered A.B.C.  A is the major version number
  263. -- it is only incremented for major changes in functionality or source
  264. structure.  B is the minor version number, incremented for less
  265. earth-shattering changes to a release.  C is the patchlevel -- it is
  266. incremented for each new release.  Note that in the past, patches have
  267. added significant changes; in fact the changeover from 0.9.9 to 1.0.0
  268. was the first time that either A or B changed!
  269.  
  270. 1.9. Q. Are there other ftp sites that carry Python related material?
  271.  
  272. A. An interesting ftp site for Python users is ftp.markv.com
  273. (192.122.251.1); the directory pub/python contains a growing
  274. collection of interesting Python scripts.  To submit a script for
  275. inclusion, place it together with a readme file (with extension
  276. .readme) in the publicly writable directory /incoming/python.  This
  277. service is maintained by Lance Ellinghouse <lance@markv.com>.
  278.  
  279.  
  280.  
  281. 2. Python in the real world
  282. ===========================
  283.  
  284. 2.1. Q. How many people are using Python?
  285.  
  286. A. I don't know, but the maximum number of simultaneous subscriptions
  287. to the Python mailing list before it was gatewayed into the newsgroup
  288. was about 180 (several of which were local redistribution lists).  I
  289. believe that many active Python users don't bother to subscribe to the
  290. list, and now that there's a newsgroup the mailing list subscription
  291. is even less meaningful.
  292.  
  293. 2.2. Q. Have any significant projects been done in Python?
  294.  
  295. A. Here at CWI (the home of Python), we have written a 20,000 line
  296. authoring environment for transportable hypermedia presentations, a
  297. 5,000 line multimedia teleconferencing tool, as well as many many
  298. smaller programs.
  299.  
  300. The University of Virginia uses Python to control a virtual reality
  301. engine.  Contact: Matt Conway <conway@virginia.edu>.
  302.  
  303. See also the next question.
  304.  
  305. 2.3. Q. Are there any commercial projects going on using Python?
  306.  
  307. A. Several companies have revealed to me that they are planning or
  308. considering to use Python in a future product.  The furthest is
  309. Sunrise Software, who already have a product out using Python -- they
  310. use Python for a GUI management application and an SNMP network
  311. manangement application.  Contact: <info@sunrise.com>.
  312.  
  313. Individuals at many other companies are using Python for
  314. internal development (witness their contributions to the Python
  315. mailing list or newsgroup).
  316.  
  317. Python has also been elected as an extension language by MADE, a
  318. consortium supported by the European Committee's ESPRIT program and
  319. consisting of Bull, CWI and some other European companies.  Contact:
  320. Ivan Herman <ivan@cwi.nl>.
  321.  
  322. 2.4. Q. How stable is Python?
  323.  
  324. A. Very stable.  While the current version number (1.0.1) would
  325. suggest it is in the early stages of development, in fact new, stable
  326. releases (numbered 0.9.x) have been coming out roughly every 3 to 6
  327. months for the past four years.
  328.  
  329. 2.5. Q. What new developments are expected for Python in the future?
  330.  
  331. A.  Without warranty that any of this will actually be realized: I am
  332. currently thinking about mechanisms for built-in on-line help and a
  333. switch/case statement.  There have been some discussions on
  334. hierarchical module names which might solve the problem of the
  335. development of large packages.  A pthreads interface has been
  336. contributed which I would like to merge into the latest release.  The
  337. X interface needs improving.  There are also some people
  338. (independently) working on a windowing interface based on STDWIN but
  339. with the power and ease of use of the average modern widget set.  I
  340. still hope to get some help in producing a Windows version.  It would
  341. be nice if there were a window-based class browser (Someone at CWI has
  342. contributed one using Motif but it needs some work).  Also: improved
  343. support for embedding Python in other applications, e.g. by renaming
  344. most global symbols to have a "Py" prefix and providing more
  345. documentation and threading support.
  346.  
  347.  
  348. 3. Building Python
  349. ==================
  350.  
  351. 3.1. Q. Is there a test set?
  352.  
  353. A. Yes, simply do "import testall" (or "import autotest" if you aren't
  354. interested in the output).  The standard modules whose name begins
  355. with "test" together comprise the test.  The test set doesn't test
  356. *all* features of Python but it goes a long way to confirm that a new
  357. port is actually working.  The Makefile contains an entry "make test"
  358. which runs the autotest module.
  359.  
  360. 3.2. Q. When running the test set, I get complaints about floating point
  361. operations, but when playing with floating point operations I cannot
  362. find anything wrong with them.
  363.  
  364. A. The test set makes occasional unwarranted assumptions about the
  365. semantics of C floating point operations.  Until someone donates a
  366. better floating point test set, you will have to comment out the
  367. offending floating point tests and execute similar tests manually.
  368.  
  369. 3.3. Q. Link errors building Python with STDWIN on SGI IRIX.
  370.  
  371. A. Rebuild STDWIN, specifying "CC=cc -cckr" in the Makefile.
  372.  
  373. 3.4. Q. Link errors after rerunning the configure script.
  374.  
  375. A. It is generally necessary to run "make clean" after a configuration
  376. change.
  377.  
  378. 3.5. Q. The python interpreter complains about options passed to a
  379. script (after the script name).
  380.  
  381. A. You are probably linking with GNU getopt, e.g. through -liberty.
  382. Don't.  (If you are using this because you link with -lreadline, use
  383. the readline distributed with Python instead.)
  384.  
  385. 3.6. Q. When building on the SGI, make tries to run python to create
  386. glmodule.c, but python hasn't been built or installed yet.
  387.  
  388. A. Comment out the line mentioning glmodule.c in Setup and build a
  389. python without gl first; install it or make sure it is in your $PATH,
  390. then edit the Setup file again to turn on the gl module, and make
  391. again.  You don't need to do "make clean"; you do need to run "make
  392. Makefile" in the Modules subdirectory (or just run "make" at the
  393. toplevel).
  394.  
  395. 3.7. Q. Other trouble building Python 1.0.1 on platform X.
  396.  
  397. A. Please email the details to <guido@cwi.nl> and I'll look into it.
  398.  
  399.  
  400. 4. Programming in Python
  401. ========================
  402.  
  403. 4.1. Q. Is there a source code level debugger with breakpoints, step,
  404. etc.?
  405.  
  406. A. Yes.  Check out module pdb; pdb.help() prints the documentation (or
  407. you can read it as Lib/pdb.doc).  If you use the STDWIN option,
  408. there's also a windowing interface, wdb.  You can write your own
  409. debugger by using the code for pdb or wdb as an example.
  410.  
  411. 4.2. Q. Can I create an object class with some methods implemented in
  412. C and others in Python (e.g. through inheritance)?  (Also phrased as:
  413. Can I use a built-in type as base class?)
  414.  
  415. A. No, but you can easily create a Python class which serves as a
  416. wrapper around a built-in object, e.g. (for dictionaries):
  417.  
  418.     # A user-defined class behaving almost identical
  419.     # to a built-in dictionary.
  420.     class UserDict:
  421.         def __init__(self): self.data = {}
  422.         def __repr__(self): return repr(self.data)
  423.         def __cmp__(self, dict):
  424.             if type(dict) == type(self.data):
  425.                 return cmp(self.data, dict)
  426.             else:
  427.                 return cmp(self.data, dict.data)
  428.         def __len__(self): return len(self.data)
  429.         def __getitem__(self, key): return self.data[key]
  430.         def __setitem__(self, key, item): self.data[key] = item
  431.         def __delitem__(self, key): del self.data[key]
  432.         def keys(self): return self.data.keys()
  433.         def items(self): return self.data.items()
  434.         def values(self): return self.data.values()
  435.         def has_key(self, key): return self.data.has_key(key)
  436.  
  437. 4.3. Q. Is there a curses/termcap package for Python?
  438.  
  439. A. No, but you can use the "alfa" (== character cell) version of
  440. STDWIN.  (STDWIN == Standard Windows, a portable windowing system
  441. interface by the same author, URL: ftp://ftp.cwi.nl/pub/stdwin.)
  442. This will also prepare your program for porting to windowing
  443. environments such as X11 or the Macintosh.
  444.  
  445. 4.4. Q. Is there an equivalent to C's onexit() in Python?
  446.  
  447. A. Yes, if you import sys and assign a function to sys.exitfunc, it
  448. will be called when your program exits, is killed by an unhandled
  449. exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
  450.  
  451. 4.5. Q. When I define a function nested inside another function, the
  452. nested function seemingly can't access the local variables of the
  453. outer function.  What is going on?  How do I pass local data to a
  454. nested function?
  455.  
  456. A. Python does not have arbitrarily nested scopes.  When you need to
  457. create a function that needs to access some data which you have
  458. available locally, create a new class to hold the data and return a
  459. method of an instance of that class, e.g.:
  460.  
  461.     class MultiplierClass:
  462.         def __init__(self, factor):
  463.             self.factor = factor
  464.         def multiplier(self, argument):
  465.             return argument * self.factor
  466.  
  467.     def generate_multiplier(factor):
  468.         return MultiplierClass(factor).multiplier
  469.  
  470.     twice = generate_multiplier(2)
  471.     print twice(10)
  472.     # Output: 20
  473.  
  474. 4.6. Q. How do I iterate over a sequence in reverse order?
  475.  
  476. A. If it is a list, the fastest solution is
  477.  
  478.     list.reverse()
  479.     try:
  480.         for x in list:
  481.             "do something with x"
  482.     finally:
  483.         list.reverse()
  484.  
  485. This has the disadvantage that while you are in the loop, the list
  486. is temporarily reversed.  If you don't like this, you can make a copy.
  487. This appears expensive but is actually faster than other solutions:
  488.  
  489.     rev = list[:]
  490.     rev.reverse()
  491.     for x in rev:
  492.         <do something with x>
  493.  
  494. If it isn't a list, a more general but slower solution is:
  495.  
  496.     i = len(list)
  497.     while i > 0:
  498.         i = i-1
  499.         x = list[i]
  500.         <do something with x>
  501.  
  502. A more elegant solution, is to define a class which acts as a sequence
  503. and yields the elements in reverse order (solution due to Steve
  504. Majewski):
  505.  
  506.     class Rev:
  507.         def __init__(self, seq):
  508.             self.forw = seq
  509.         def __len__(self):
  510.             return len(self.forw)
  511.         def __getitem__(self, i):
  512.             return self.forw[-(i + 1)]
  513.  
  514. You can now simply write:
  515.  
  516.     for x in Rev(list):
  517.         <do something with x>
  518.  
  519. Unfortunately, this solution is slowest of all, due the the method
  520. call overhead...
  521.  
  522. 4.7. Q. My program is too slow.  How do I speed it up?
  523.  
  524. A. That's a tough one, in general.  There are many tricks to speed up
  525. Python code; I would consider rewriting parts in C only as a last
  526. resort.  One thing to notice is that function and (especially) method
  527. calls are rather expensive; if you have designed a purely OO interface
  528. with lots of tiny functions that don't do much more than get or set an
  529. instance variable or call another method, you may consider using a
  530. more direct way, e.g. directly accessing instance variables.  Also see
  531. the standard module "profile" (described in the file
  532. "python/lib/profile.doc") which makes it possible to find out where
  533. your program is spending most of its time (if you have some patience
  534. -- the profiling itself can slow your program down by an order of
  535. magnitude).
  536.  
  537. 4.8. Q. When I have imported a module, then edit it, and import it
  538. again (into the same Python process), the changes don't seem to take
  539. place.  What is going on?
  540.  
  541. A. For efficiency reasons, Python only reads the module file on the
  542. first time a module is imported (otherwise a program consisting of
  543. many modules, each of which imports the same basic module, would read
  544. the basic module over and over again).  To force a changed module
  545. being read again, do this:
  546.  
  547.     import modname
  548.     reload(modname)
  549.  
  550. Warning: this technique is not 100% fool-proof.  In particular,
  551. modules containing statements like
  552.  
  553.     from modname import some_objects
  554.  
  555. will continue to work with the old version of the objects imported
  556. thus.
  557.  
  558. 4.9. Q. I have a module in which I want to execute some extra code when it
  559. is run as a script.  How do I find out whether I am running as a
  560. script?
  561.  
  562. A. A module can find out its own module name by alooking at the
  563. (predefined) global variable __name__.  If this has the value
  564. '__main__' you are running as a script.  E.g. if you put the following
  565. on the last line of your module, main() is called only when your
  566. module is running as a script:
  567.  
  568.     if __name__ == '__main__': main()
  569.  
  570.  
  571. 5. Extending Python
  572. ===================
  573.  
  574. 5.1. Q. Can I create my own functions in C?
  575.  
  576. A. Yes, you can create built-in modules containing functions,
  577. variables, exceptions and even new types in C.  This is explained in
  578. the document "Extending and Embedding the Python Interpreter" (the
  579. LaTeX file Doc/ext.tex).  Also read the chapter on dynamic loading.
  580.  
  581. 5.2. Q. Can I create my own functions in C++?
  582.  
  583. A. Yes, using the C-compatibility features found in C++.  Basically
  584. you place extern "C" { ... } around the Python include files and put
  585. extern "C" before each function that is going to be called by the
  586. Python interpreter.  Global or static C++ objects with constructors
  587. are probably not a good idea.
  588.  
  589.  
  590. 6. Python's design
  591. ==================
  592.  
  593. 6.1. Q. Why isn't there a generic copying operation for objects in
  594. Python?
  595.  
  596. A. Hmm.  Maybe there should be one, but it's difficult to assign a
  597. useful meaning to copying of open files, sockets and windows, or
  598. recursive data structures.  As long as you design all your classes
  599. yourself you are of course free to define a standard base class that
  600. defines an overridable copying operation for all the objects you care
  601. about.  (One practical point: it would have to be a built-in function,
  602. not a standard method name, since not all built-in object types have
  603. methods; e.g. strings, integers and tuples don't.)
  604.  
  605. 6.2. Q. Why isn't there a generic way to implement persistent objects
  606. in Python?  (Persistent == automatically saved to and restored from
  607. disk.)
  608.  
  609. A. Hmm, hmm.  Basically for the same reasons as why there is no
  610. generic copying operation.
  611.  
  612. 6.3. Q. Why isn't there a switch or case statement in Python?
  613.  
  614. A. You can do this easily enough with a sequence of
  615. if... elif... elif... else.  There have been some proposals for switch
  616. statement syntax, but there is no concensus (yet) on whether and how
  617. to do range tests.
  618.  
  619.  
  620. 7. Using Python on non-UNIX platforms
  621. =====================================
  622.  
  623. 7.1. Q. Is there a Mac version of Python?
  624.  
  625. A. Yes.  It is on most ftp sites carrying Python as python.sea.hqx --
  626. this is a self-extracting archive containing the application binary as
  627. well as the Lib modules.
  628.  
  629. 7.2. Q. Is there a DOS version of Python?
  630.  
  631. A. Yes.  More than one, actually: 16python.exe runs in standard DOS
  632. mode on 186 CPUs or higher; 32python.exe uses a DOS extender and only
  633. runs on a 386 or higher CPUs.  Although 16python.exe does not pass the
  634. test set because test_grammar is too big for the parser, it actually
  635. has about 270 kbyte of allocatable heap space, which is sufficient for
  636. fairly large programs.  32python.exe is distributed as a tar file
  637. containing the required DOS extended and 387 emulator.  Both are on
  638. most ftp sites carrying Python.
  639.  
  640. 7.3. Q. Is there a Windows version of Python?
  641.  
  642. A. Yes.  Use qwpython.exe.  The only problem with it: ^C
  643. unconditionally kills the entire program -- it does not raise
  644. KeyboardInterrupt.  You can also run 16python.exe or 32python.exe in a
  645. "DOS box", but qwpython.exe appears to be slightly faster.
  646.  
  647. 7.4. Q. Is there a Windows NT version of Python?
  648.  
  649. A. Yes.  Use ntpython.exe.  This is for Intel CPUs.  If you want a
  650. Windows user interface, use qwpython.exe.
  651.  
  652. 7.5. Q. I have the DOS or Windows version but it appears to be only a
  653. binary.  Where's the library?
  654.  
  655. A. You still need to copy the files from the distribution directory
  656. "python/Lib" to your system.  If you don't have the full distribution,
  657. you can get the file pythonlib1.0.1.tar.Z from most ftp sites carrying
  658. Python; this is a subset of the distribution containing just those
  659. file.
  660.  
  661. Once you have installed the library, you need to point sys.path to it.
  662. Assuming the library is in C:\misc\python\lib, the following commands
  663. will point your Python interpreter to it (note the doubled backslashes
  664. -- you can also use single forward slashes instead):
  665.  
  666.     >>> import sys
  667.     >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
  668.     >>>
  669.  
  670. For a more permanent effect, set the environment variable PYTHONPATH,
  671. as follows (talking to a DOS prompt):
  672.  
  673.     C> SET PYTHONPATH=C:\misc\python\lib
  674.  
  675. 7.6. Q. Where's the documentation for the Mac or PC version?
  676.  
  677. A. There isn't any.  The documentation for the Unix version also
  678. applies to the Mac and PC versions.  Where applicable, differences
  679. are indicated in the text.
  680.  
  681. 7.7. Q. The Mac (PC) version doesn't seem to have any facilities for
  682. creating or editing programs apart from entering it interactively, and
  683. there seems to be no way to save code that was entered interactively.
  684. How do I create a Python program on the Mac (PC)?
  685.  
  686. A. Use an external editor.  On the Mac, I am quite happy with the Desk
  687. Accessory called Sigma Edit; this doesn't require Multifinder or
  688. System 7.  I work like this: start the interpreter; edit a module file
  689. using Sigma Edit; import and test it in the interpreter; edit again in
  690. Sigma Edit; then use the built-in function reload() to re-read the
  691. imported module; etc.
  692.  
  693. Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
  694. anyone with a pulse could certainly figure out how to do the same on
  695. MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
  696. Not only can you easily resave and "reload()" from Python after making
  697. changes, but since WinNot auto-copies to the clipboard any text you
  698. select, you can simply select the entire procedure (function) which
  699. you changed in WinNot, switch to QWPython, and shift-ins to reenter
  700. the changed program unit."
  701.